package cn.hinglo.permission.controller;

import cn.hinglo.common.annotation.JsonBody;
import cn.hinglo.common.annotation.RequestMapping;
import cn.hinglo.common.config.base.BaseController;
import cn.hinglo.common.interceptors.request.Delete;
import cn.hinglo.common.interceptors.request.Get;
import cn.hinglo.common.interceptors.request.Post;
import cn.hinglo.common.interceptors.request.Put;
import cn.hinglo.permission.entity.ApiQueryFilter;
import cn.hinglo.permission.model.Api;
import cn.hinglo.permission.service.ApiService;
import com.jfinal.aop.Before;
import com.jfinal.aop.Inject;
import com.jfinal.core.paragetter.Para;
import lombok.extern.slf4j.Slf4j;

import java.util.Map;

/**
 * @author HingLo
 * @createTime: 2020-09-09 10:43:48
 * @description: ApiController 控制器
 */
@RequestMapping("/sysApi")
@Slf4j
public class ApiController extends BaseController {

    @Inject
    private ApiService apiService;

    /**
     * Api列表
     */
    @Before(Get.class)
    public Map<String, Object> list(@Para("") ApiQueryFilter filter) {
        return apiService.listApiService(filter);
    }

    /***
     * 添加Api 对象
     * @param api 添加的Api对象
     */
    @Before(Post.class)
    public Integer add(@JsonBody @Para("") Api api) {
        return apiService.addApiService(api);
    }

    /***
     * 删除指定Id的Api对象
     * @param id Api编号
     */
    @Before(Delete.class)
    public boolean delete(Integer id) {
        return apiService.deleteApiService(id);
    }

    /***
     * 发布或者取消发布接口
     * @param id is
     * @param state 状态
     * @return 返回结果
     */
    @Before(Put.class)
    public boolean update(Integer id, Integer state) {
        return apiService.updateApiService(id, state);
    }

    /***
     * 接口测试
     * @return 返回结果
     */
    @Before(Post.class)
    public boolean apiTest() {
        return true;
    }

}